package utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 系统时间 操作 工具类
 * @author sonysuo
 */
public class TimeUtil {
	private static Logger logger = LoggerFactory.getLogger(TimeUtil.class);
	/**
	 * 获取当前系统时间
	 * @return
	 */
	public static String getCurrentSystemTime(){
		logger.info("获取当前系统时间：<TimerService.getCurrentSystemTime()> $");
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		return df.format(new Date());// new Date()为获取当前系统时间
	}
	
	/**
	 * 比较两个时间的大小
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean compareDate(String date1, String date2) {
		logger.info("比较两个时间的大小 （date1 = " + date1 + ", date2 = " + date2 + "）：<TimerService.compareDate()> $");
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            Date dt1 = df.parse(date1);
            Date dt2 = df.parse(date2);
            if (dt1.getTime() > dt2.getTime()) {
                return true;
            } 
        } catch (Exception e) {
        	logger.error("compare the time error : ", e);
        }
        return false;
    }
	
	/**
	 * 计算两个日期之间相差的天数
	 * 
	 * @param smdate
	 *            较小的时间
	 * @param bdate
	 *            较大的时间
	 * @return 相差天数
	 * @throws ParseException
	 */
	public static int daysBetween(Date smdate, Date bdate){
		logger.info("计算两个时间的之间相隔天数： （date1 = " + smdate + ", date2 = " + bdate + "）：<TimerService.daysBetween()> $");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			smdate = sdf.parse(sdf.format(smdate));
			bdate = sdf.parse(sdf.format(bdate));
		} catch (ParseException e) {
			logger.error(" com.sxs.service.TimerService.daysBetween ", e);
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(smdate);
		long time1 = cal.getTimeInMillis();
		cal.setTime(bdate);
		long time2 = cal.getTimeInMillis();
		long between_days = (time2 - time1) / (1000 * 3600 * 24);
		logger.info("计算两个时间的之间相隔天数： （date1 = " + smdate + ", date2 = " + bdate + "）为: " + between_days + " $");
		return Integer.parseInt(String.valueOf(between_days));
	} 
	
	/**
	* 字符串转换成日期
	* @param str
	* @return date
	*/
	public static Date strToDate(String str) {
		logger.info("将时间字符串（" + str + "）转换为日期类型：<TimerService.strToDate()> $");
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = format.parse(str);
		} catch (ParseException e) {
			logger.error(" com.sxs.service.TimerService.strToDate ", e);
		}
		return date;
	}
}
